package com.atguigu.gmall.order.service;

import com.atguigu.gmall.model.enums.ProcessStatus;
import com.atguigu.gmall.model.order.OrderInfo;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;
import java.util.Map;

public interface OrderService extends IService<OrderInfo> {
    /**
     * 保存订单
     * @param orderInfo
     * @return
     */
    Long saveOrderInfo(OrderInfo orderInfo);

    //获取流水号
    String getTradeNo(String userId);

    //比对流水号
    boolean checkTradeNo(String tradeNo,String userId);

    //删除流水号
    void deleteTradeNo(String userId);

    //比对库存
    boolean checkStock(Long skuId,Integer skuNum);

    //获取订单列表
    IPage getOrderList(Page<OrderInfo> orderInfoPage, String userId);

    //取消订单
    void execExpiredOrder(Long orderId);

    //更新订单状态
    void updateOrderStatus(Long orderId, ProcessStatus closed);

    //根据订单id查询订单信息
    OrderInfo getOrderInfo(Long orderId);

    //给库存系统发送消息
    void sendOrderStatus(Long orderId);

    //封装库存系统需要的参数
    Map initWare(OrderInfo orderInfo);

    //拆分订单
    List<OrderInfo> orderSplit(Long orderId,String strMap);

    // 处理过期订单
    void execExpiredOrder(Long orderId, String flag);
}
